#pragma once

#include <map>
#include <string>

namespace qbe::state {

// 绘制模式
enum struct DrawingModeType {
  None = 0,
  Polygon,
  Path,
  Rectangle,
  Circle,
  Ellipse,
  Fan,
  Text,
  Ruler,
  Label,
  KeyPoint,
  Pin,
  SectionArea3D,
  ViewArea3D,
  Num
};

// 编辑模式
enum struct EditingModeType {
  None = 0,
  Undo,
  Redo,
  Move,
  Rotation,
  Copy,
  Shear,
  Affix,
  Mirror,
  Cutting,
  Merge,
  Boolean,
  Align,
  Array,
  LineAddCorner,
  Num,
  EnterRefCell,
  BackUpperLayer,
  BackTopLayer,
  EditRefCell,
  Extension,
  Clipping,
  Decompose,
  Drift,
  AddCell,
  SaveAsCell,
  BreakUp,
  FilletTool,
  Stretch,
  CenterLine,
  QuickAlign,
  Slice,
  AutoRouteStretchLine,
  AutoRoutePushLine,
  AutoRouteFixedDistanceStretchLine,
  WaferLayout,
  TOOL_SQUID,
  View_area_3d,
  Section_area_3d,
  Remove_ruler_pin,
  ConfirmLineLength,
  AutoRouteNetlist,
};

enum struct EditingChildMode { None = 0, QuickPointAlign, QuickLineAlign };
enum struct AutoRouteFixedDistanceStretchLineChildMode {
  None = 0,
  CancelAllSelect,       //取消所有的选择与部分选择
  PointLineSelectRange,  //只能部分选择线段的一部分
  DisableSelection,      //禁用选择与部分选择
};

// 选择模式
enum struct SelectModeType { None = 0, Overall, Part, Num };

}  // namespace qbe::state
